blob: d0e56fd7141aeccd8f152838f966e3b684701a00 [file] [log] [blame]
Shawn O. Pearce6e752212009-08-12 12:22:12 -07001gerrit create-project
2=====================
3
4NAME
5----
6gerrit create-project - Create a new hosted project
7
8SYNOPSIS
9--------
10[verse]
Shawn O. Pearce47769242011-06-14 16:40:48 -070011'ssh' -p <port> <host> 'gerrit create-project'
12 [--owner <GROUP> ... | -o <GROUP> ...]
13 [--parent <NAME> | -p <NAME> ]
Bruce Zucdb3cb82011-12-14 13:27:43 +080014 [--suggest-parents | -S ]
Shawn O. Pearce47769242011-06-14 16:40:48 -070015 [--permissions-only]
16 [--description <DESC> | -d <DESC>]
Edwin Kempin73b26982012-07-16 13:53:22 +020017 [--submit-type <TYPE> | -t <TYPE>]
Shawn O. Pearce47769242011-06-14 16:40:48 -070018 [--use-contributor-agreements | --ca]
19 [--use-signed-off-by | --so]
20 [--use-content-merge]
21 [--require-change-id | --id]
Anatol Pomazaua54b03d2012-05-03 11:43:22 -070022 [[--branch <REF> | -b <REF>] ...]
Shawn O. Pearce47769242011-06-14 16:40:48 -070023 [--empty-commit]
24 { <NAME> | --name <NAME> }
Shawn O. Pearce6e752212009-08-12 12:22:12 -070025
26DESCRIPTION
27-----------
28Creates a new bare Git repository under `gerrit.basePath`, using
29the project name supplied. The newly created repository is empty
30(has no commits), but is registered in the Gerrit database so that
31the initial commit may be uploaded for review, or initial content
32can be pushed directly into a branch.
33
34If replication is enabled, this command also connects to each of
35the configured remote systems over SSH and uses command line git
36on the remote system to create the empty repository.
37
38
39ACCESS
40------
Shawn O. Pearce897d9212011-06-16 16:59:59 -070041Caller must be a member of the privileged 'Administrators' group,
Fredrik Luthander79d38152012-03-13 09:52:22 +010042or have been granted
43link:access-control.html#capability_createProject[the 'Create Project' global capability].
Shawn O. Pearce6e752212009-08-12 12:22:12 -070044
45SCRIPTING
46---------
47This command is intended to be used in scripts.
48
49OPTIONS
50-------
Shawn O. Pearce47769242011-06-14 16:40:48 -070051<NAME>::
52Required; name of the new project to create. If name ends
53with `.git` the suffix will be automatically removed.
Shawn O. Pearce6e752212009-08-12 12:22:12 -070054
Shawn O. Pearce47769242011-06-14 16:40:48 -070055--name::
56-n::
57Deprecated alias for the <NAME> argument. This option may
58be removed in a future release.
59
60--branch::
61-b::
Anatol Pomazaua54b03d2012-05-03 11:43:22 -070062Name of the initial branch(es) in the newly created project.
63Several branches can be specified on the command line.
64If several branches are specified then the first one becomes HEAD
65of the project. If none branches are specified then default value
66('master') is used.
Shawn O. Pearce8c56a8c2009-09-18 19:21:08 -070067
Shawn O. Pearce47769242011-06-14 16:40:48 -070068--owner::
69-o::
Hugo Josefson072b4702010-04-21 19:27:11 +020070Name of the group(s) which will initially own this repository.
71The specified group(s) must already be defined within Gerrit.
72Several groups can be specified on the command line.
Shawn O. Pearce6e752212009-08-12 12:22:12 -070073+
Shawn O. Pearce47769242011-06-14 16:40:48 -070074Defaults to what is specified by `repository.*.ownerGroup`
Shawn O. Pearce897d9212011-06-16 16:59:59 -070075in gerrit.config.
Shawn O. Pearce6e752212009-08-12 12:22:12 -070076
Shawn O. Pearce47769242011-06-14 16:40:48 -070077--parent::
78-p::
Shawn O. Pearce9c151142010-04-23 17:03:16 -070079Name of the parent project to inherit access rights
80through. If not specified, the parent is set to the default
Shawn O. Pearcea0631822011-06-14 11:18:18 -070081project `All-Projects`.
Shawn O. Pearce9c151142010-04-23 17:03:16 -070082
Bruce Zucdb3cb82011-12-14 13:27:43 +080083--suggest-parents::
84-S::
85Suggest parent candidates. This option cannot be used with
86other arguments. Print out a list of projects that are
87already parents to other projects, thus it can help the user
88find a suitable parent for the new project.
89
Shawn O. Pearce47769242011-06-14 16:40:48 -070090--permissions-only::
Shawn O. Pearceaaca9592011-06-14 10:24:49 -070091Create the project only to serve as a parent for other
92projects. The new project's Git repository will be
93initialized to have 'HEAD' point to 'refs/meta/config'.
94
Shawn O. Pearce47769242011-06-14 16:40:48 -070095--description::
96-d::
Shawn O. Pearce6e752212009-08-12 12:22:12 -070097Initial description of the project. If not specified,
98no description is stored.
Shawn O. Pearceea6fc172009-09-18 15:40:38 -070099+
100Description values containing spaces should be quoted in single quotes
Shawn O. Pearce47769242011-06-14 16:40:48 -0700101('). This most likely requires double quoting the value, for example
102`--description "'A description string'"`.
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700103
Shawn O. Pearce47769242011-06-14 16:40:48 -0700104--submit-type::
105-t::
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700106Action used by Gerrit to submit an approved change to its
107destination branch. Supported options are:
108+
Shawn O. Pearce8c56a8c2009-09-18 19:21:08 -0700109* FAST_FORWARD_ONLY: produces a strictly linear history.
110* MERGE_IF_NECESSARY: create a merge commit when required.
111* MERGE_ALWAYS: always create a merge commit.
112* CHERRY_PICK: always cherry-pick the commit.
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700113
114+
Shawn O. Pearce8c56a8c2009-09-18 19:21:08 -0700115Defaults to MERGE_IF_NECESSARY. For more details see
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700116link:project-setup.html#submit_type[Change Submit Actions].
117
Shawn O. Pearce47769242011-06-14 16:40:48 -0700118--use-content-merge::
Dmitry Fink876953e2010-09-29 23:44:22 -0700119If enabled, Gerrit will try to perform a 3-way merge of text
120file content when a file has been modified by both the
121destination branch and the change being submitted. This
122option only takes effect if submit type is not
123FAST_FORWARD_ONLY. Disabled by default.
124
Shawn O. Pearce47769242011-06-14 16:40:48 -0700125--use-contributor-agreements::
126--ca::
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700127If enabled, authors must complete a contributor agreement
128on the site before pushing any commits or changes to this
129project. Disabled by default.
130
Shawn O. Pearce47769242011-06-14 16:40:48 -0700131--use-signed-off-by::
132--so:
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700133If enabled, each change must contain a Signed-off-by line
134from either the author or the uploader in the commit message.
135Disabled by default.
136
Shawn O. Pearce47769242011-06-14 16:40:48 -0700137--require-change-id::
138--id::
139Require a valid link:user-changeid.html[Change-Id] footer
140in any commit uploaded for review. This does not apply to
141commits pushed directly to a branch or tag.
142
143--empty-commit::
Shawn Pearceec155112010-10-12 13:58:36 +0200144Creates an initial empty commit for the Git repository of the
145project that is newly created.
146
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700147
148EXAMPLES
149--------
150Create a new project called `tools/gerrit`:
151
152====
Shawn O. Pearce47769242011-06-14 16:40:48 -0700153$ ssh -p 29418 review.example.com gerrit create-project tools/gerrit.git
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700154====
155
Shawn O. Pearceea6fc172009-09-18 15:40:38 -0700156Create a new project with a description:
157
158====
Shawn O. Pearce47769242011-06-14 16:40:48 -0700159$ ssh -p 29418 review.example.com gerrit create-project tool.git --description "'Tools used by build system'"
Shawn O. Pearceea6fc172009-09-18 15:40:38 -0700160====
161
162Note that it is necessary to quote the description twice. The local
163shell needs double quotes around the value to ensure the single quotes
164are passed through SSH as-is to the remote Gerrit server, which uses
165the single quotes to delimit the value.
166
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700167REPLICATION
168-----------
Shawn O. Pearce7d2cb042012-05-10 19:12:09 -0700169If the replication plugin is installed, the plugin will attempt to
170perform remote repository creation by a Bourne shell script:
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700171
172====
Shawn O. Pearce8c56a8c2009-09-18 19:21:08 -0700173 mkdir -p '/base/project.git' && cd '/base/project.git' && git init --bare && git update-ref HEAD refs/heads/master
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700174====
175
Shawn O. Pearce8c56a8c2009-09-18 19:21:08 -0700176For this to work successfully the remote system must be able to run
177arbitrary shell scripts, and must have `git` in the user's PATH
178environment variable. Administrators could also run this command line
179by hand to establish a new empty repository.
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700180
Shawn O. Pearce7d2cb042012-05-10 19:12:09 -0700181A custom extension or plugin may also be developed to implement the
182NewProjectCreatedListener extension point and handle custom logic
183for remote repository creation.
184
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700185SEE ALSO
186--------
187
Shawn O. Pearce6e752212009-08-12 12:22:12 -0700188* link:project-setup.html[Project Setup]
189
190GERRIT
191------
192Part of link:index.html[Gerrit Code Review]